home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1995 March / Macworld CD-ROM (March 1995).cdr / Updaters / Symantec C++⁄MPW 6.0.1 / READ ME
Encoding:
Text File  |  1993-09-22  |  8.8 KB  |  252 lines  |  [TEXT/ttxt]

  1. ABOUT SYMANTEC C/C++ for MPW 6.0.1
  2. ==================================
  3. Copyright © 1993 Symantec Corporation. All Rights Reserved.
  4. September 20, 1993
  5. Font: Geneva 12
  6.  
  7. INTRODUCTION
  8. =============
  9. The Symantec C/C++ for MPW 6.0.1 Update corrects problems with the 6.0 version of the
  10. following parts of the Symantec C/C++ for MPW system: SCpp, SC, SCpre, SCUnmangle,
  11. and the IOStreams library. It also contains several new include files.
  12.  
  13. This document has the following sections:
  14.  
  15.  • UPDATING YOUR SYSTEM tells you how to run the various patch
  16.       programs to update your Symantec C++ for MPW tools, and how to
  17.             update your libraries.
  18.  
  19.  • WHAT THIS UPDATE FIXES describes the changes that were made for this update.
  20.  
  21.  • WORK-AROUNDS describes how to avoid some problems developers
  22.    have reported to us in using Symantec C++ for Macintosh.
  23.  
  24. UPDATING YOUR SYSTEM
  25. =====================
  26. Updating your Symantec C++ for MPW 6.0.1 installation is a two step process: you need to patch the tools, and you need to install the new libraries and header files.
  27.  
  28. Patching Things Up
  29. -----------------
  30. This update contains four small applications in the ‘Patches’ folder that
  31. will transform your tools into the new versions. Updating is easy:
  32.  
  33. • Double-click on the patch application (i.e. “SCpp 6.0.1 Patch”).
  34. • Read the messages in the dialog that comes up; they may contain
  35.   important information. Click the ‘Patch’ button.
  36. • Select the tool asked for using the standard file dialog box.
  37.  
  38.     •••••••••
  39.  IMPORTANT
  40.     •••••••••
  41.     
  42.     The patch is done in place! This means that the patcher will overwrite
  43.     the file you’re updating. When it is done, you will get a confirmation that
  44.  the patch was successful.
  45.     
  46. • Repeat these steps for the other patches in the ‘Patches’ folder:
  47.  
  48.     SC 6.0.1 Patch
  49.     SCpre 6.0.1 Patch
  50.     SCUnmangle 6.0.1 Patch
  51.  
  52. Updating the Headers and Libraries
  53. -------------------------------
  54. The new headers and libraries are contained in a Compact Pro self extracting archive. Installing them is easy:
  55.  
  56. • Double-click on the file “SCpp 6.0.1 Update.sea”.
  57. • When it asks you to “Select the destination folder”, select a convenient folder
  58.   on your hard drive.
  59. • The archive will begin to extract its files, displaying a progress dialog as it goes.
  60. • Launch MPW and execute the “InstallUpdate” script in the folder “Symantec C/C++
  61.   Update”. You should select this folder in the directory dialog box that appears when
  62.   the script runs.
  63. • Several files that were part of the 6.0 release are now obsolete: you are given the
  64.   option of having the script delete these files for you. Click the OK button if you
  65.   want them to be removed.
  66. • Three files in the MacApp toolset were modified for this release. If you want to
  67.   update these, click the OK button in the dialog and they will be copied into their
  68.   correct location.
  69. • A series of Duplicate command-lines will be generated by the script to copy the
  70.   updated files to their respective locations in your MPW folder. Select these lines
  71.   by dragging over them and press the Enter key. The files will be copied.
  72. • The update is now complete: you may delete the “Symantec C/C++ Update” folder.
  73.  
  74.  
  75. WHAT THIS UPDATE FIXES
  76. =======================
  77.     •••••••••
  78.  IMPORTANT
  79.     •••••••••
  80.     
  81. All precompiled headers must be re-precompiled to use the new translator.
  82. In addition, object layout has changed, so be sure to recompile all C++ object
  83. code from scratch.
  84.  
  85. Overall, these areas of the compiler were addressed:
  86.  
  87.     -    error reporting and handling
  88.     -    template generation
  89.     -    multiple inheritance
  90.  
  91. •    Calling ldiv() no longer corrupts the stack.
  92.  
  93. •    Aggregate results for C++ routines that have more than one argument
  94.         now work correctly.
  95.  
  96. •    C++ comments that contain single or double quotes following
  97.         preprocessor directives with “ANSI conformance” on now work correctly.
  98.  
  99. •    Template functions may be declared static or inline.
  100.  
  101. •    Error handling when encountering erroneous template declarations has been
  102.   improved.
  103.  
  104. •    The built-in name “comp” is not recognized when strict ANSI conformance
  105.         is on.
  106.     
  107. •    Conditional expressions with enum (or smaller-than-int) arguments are
  108.         not promoted to int.
  109.  
  110. •    asm() is now allowed when ANSI relaxed is used.
  111.  
  112. •    Many bugs with multiple inheritance were fixed, particularly those involving
  113.   virtual base and non-virtual base hierarchies.
  114.  
  115. •    A bug with operator overloading and forward declared types was fixed.
  116.  
  117. •    Error handling is more robust.
  118.  
  119. •    An erroneous “code segment too large” error in switch statement code generation
  120.   was fixed.
  121.  
  122. •    A code generation bug with conditional operators was fixed.
  123.  
  124. •    C calling conventions for functions that return structs now work.
  125.  
  126. •    A template bug with an incorrect “member functions cannot be static” error
  127.         was fixed.
  128.  
  129. •    Member functions no longer hide base class functions of the same name for
  130.         PascalObject derived classes.
  131.  
  132. •    Overloaded operator[]() now works correctly with respect to non-int
  133.         arguments.
  134.  
  135. •    Error reporting for errors that occur during template expansion was improved.
  136.  
  137. •    Improved multiple inheritance code generation.
  138.  
  139. •    The friend declaration of a function previously declared as static no longer
  140.         changes the function’s linkage.
  141.  
  142. •    Bug in transcendental 68881 codegen fixed.
  143.  
  144. •    Empty non-virtual destructors that are generated out of line no longer
  145.         produce incorrect code.
  146.  
  147. •    Floating point struct member passed as argument to routine with pascal
  148.         calling conventions no longer produces incorrect code.
  149.  
  150. •    The compiler now flags overloaded PascalObject member functions as errors.
  151.  
  152. •    A code generation bug with pointer and bitwise & was fixed.
  153.  
  154. •    Decrement operator applied to HandleObject class member no longer
  155.         modifies “this” pointer.
  156.  
  157. •    Initializing an array of pointers to functions with fixed array bounds
  158.         no longer produces an internal error.
  159.  
  160. •    Internal error when compiling an expression with a conditional operator
  161.         no longer occurs.
  162.  
  163. •    The compiler now allows destructors to be called with C calling conventions
  164.         (via the __cdecl directive).
  165.  
  166. •    Arithmetic expressions involving non-int sized enums work.
  167.         In some cases this bug caused an internal error, in CDorth.c, line 211.
  168.  
  169. •    A syntax error in an enum statement no longer causes crash.
  170.  
  171. •    The “access denied” error message with templates now has the correct unmangled
  172.         name.
  173.  
  174. •    The internal error in mangle.c when compiling function with comp arguments
  175.         no longer occurs.
  176.  
  177. •    The compiler produces a warning when a class’ key function is later declared
  178.         inline.
  179.  
  180. •    Specifying the size of an initialized aggregate that has an initializer
  181.         that contains expressions of non-basic types no longer causes an internal
  182.         error.
  183.  
  184. •    You can now specify nested types in a C++ style cast.
  185.  
  186. •    Syntax errors during template expansion will no longer cause crashes.
  187.  
  188. •    The compiler no longer generates MacsBug names when no link
  189.         instruction is generated.
  190.  
  191. •    The size of PascalObject objects as placed in class info proc is now
  192.         correct for model far objects.
  193.  
  194. • Several memory leaks were fixed.
  195.  
  196. •    Fixed numerous internal errors in the compiler.
  197.  
  198. • SCcreateMake now includes SCLibC.o as the default C library in makefiles for C
  199.   programs instead of SCLibC881.o.  It also accepts source files with a .cpp extension.
  200.   
  201. • The MacApp tools MABuildTool.p, MABuildTool, and “Build Rules and Dependencies”
  202.   have been fixed to set the CPlusIncludesSC shell variable properly.  For MacApp builds
  203.   using SCpp, the CPlusIncludesSC folder is searched before the CPlusIncludes folder.
  204.   For MacApp builds using CFront, the shell variable is set to a null string so the
  205.   CPlusIncludesSC folder is ignored. 
  206.  
  207. WORK-AROUNDS
  208. ===============
  209. This section describes how to avoid known problems with the Symantec C/C++
  210. for MPW system.
  211.  
  212. • Friend declarations are not accepted as a forward declaration, so the following
  213.   snippet will not compile without first forward declaring Y:
  214.  
  215.         //class Y;
  216.         class X {
  217.             friend class Y;
  218.             Y *pY;
  219.         };
  220.  
  221. • To declare a reference to a pointer to an int, use the following:
  222.  
  223.         int *s;
  224.         int *&p = s;
  225.  
  226. • The “Align 4-byte boundaries” option in the C++ compiler aligns the members of a
  227.   structure on 4-byte boundaries.
  228.  
  229. • When precompiling headers that contain inline implementations of virtual functions
  230.   outside of the class declarations, the “inline” keyword must be specified in the class
  231.   declaration. For example,
  232.  
  233.         class c {
  234.         public:
  235.             virtual short foo(short n);
  236.         };
  237.  
  238.         inline short c::foo(short n) { return 2*n; }
  239.  
  240.   will not precompile. However, declaring foo as
  241.  
  242.             inline virtual short foo(short n);
  243.  
  244.   will work as expected.
  245.  
  246. • You can not have virtual functions in C++ classes in code resources or drivers.
  247.  
  248. • If you are writing a code resource that uses C++ static objects with constructors,
  249.   then the constructors are not called. You will need to allocate an instance of the
  250.   object with new for the constructor to be called.
  251.  
  252.